# 装饰器
# 闭包函数的参数只能有一个参数并且是函数类型，那么定义的定义的这个函数才是装饰器
def decorator(fn):
	print("装饰器执行了")
	def inner():
		print("请先登陆")
		fn()
	# 这里装饰器其实返回了一个闭包实例
	return inner

# 语法糖格式装饰函数的写法: @装饰器名称


@decorator # comment = decorator(comment)
def comment():
	print("发表评论")

@decorator # say = decorator(say)
def say():
	print("发说说")


# 使用装饰器装饰已有函数
# comment = decorator(comment)
# comment()

# say = decorator(say)
# say()

# comment()
# say()

# 当模块加载完成的时候就立刻执行装饰器，对函数进行装饰